Web widget that facilitates telephone calls with customer-support agents and other customer-support services

ABSTRACT

A system and method for providing customer-support services to a user of a website through a web widget. When the user accesses a web page containing the web widget, a call is automatically made from the web widget to a customer-support system. In response to the call, the system obtains status information from the customer-support system indicating whether customer-support agents are available to take telephone phone calls. If the status information indicates customer-support agents are available to take telephone calls, the web widget provides a call-related interface to the user, wherein the call-related interface is configured to facilitate a telephone call with a customer-support agent. If the status information indicates customer-support agents are not available to take telephone calls, the web widget provides a non-call-related interface to the user, wherein the non-call-related interface is configured to facilitate an alternative channel of customer support that does not involve a telephone call.

RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.16/414,545, entitled “Web Widget that Facilitates Telephone Calls withCustomer-Support Agents and Other Customer-Support Services,” which wasfiled May 16, 2019. Also, this application claims the benefit under 35U.S.C. § 119 of U.S. Provisional Patent Application No. 62/672,492,entitled “Web Widget,” which was filed May 16, 2018. The contents ofboth applications are incorporated herein by reference.

BACKGROUND Field

The disclosed embodiments generally relate to computer-based systemsthat manage customer-support interactions. More specifically, thedisclosed embodiments relate to the design of a web widget thatfacilitates telephone calls with customer-support agents and othercustomer-support services.

Related Art

As electronic commerce continues to proliferate, customers are beginningto use online customer-support resources to resolve problems, and toobtain information related to various products or services. These onlinecustomer-support resources commonly include customer-support systems,which help customers resolve their problems, either by providinginformation to the customers, or by facilitating interactions withcustomer-support agents. When designed properly, these customer-supportsystems can automate customer-support interactions, therebysignificantly reducing a company's customer-support-related expenses.

Website designers typically make customer-support resources easilyaccessible within their websites. However, this typically involves asignificant amount of programming to integrate functionality from acustomer-support API, which is often obtained from a third-partyprovider, into a website. The same API is typically used by manywebsites to perform similar functions. Hence, it may be possible toavoid much of the manual programming effort involved in integratingcustomer-support resources into a website if the sameintegration-related code can be used across multiple websites.

Customer support resources can also be provided through multiplechannels, such as: user-fillable forms; an online chat session with acustomer-support agent; a telephone call with a customer-support agent;and self-service help involving user-initiated searches through acustomer-support knowledge base. However the availability of thesechannels can change over time as the availability of customer-supportagents changes. This makes it challenging to produce a customer-supportinterface, which effectively integrates the changing customer-supportchannels into a coherent user experience.

Hence, what is needed is a method for effectively integratingcustomer-support resources into a website without requiring asignificant amount of programming effort.

SUMMARY

The disclosed embodiments relate to a system that providescustomer-support services to a user of a website through a web widget.When the user accesses a web page containing the web widget, the systemautomatically makes a call from the web widget to a customer-supportsystem. In response to the call, the system obtains status informationfrom the customer-support system, wherein the status informationindicates whether customer-support agents are available to taketelephone phone calls. If the status information indicatescustomer-support agents are available to take telephone calls, the webwidget provides a call-related interface to the user, wherein thecall-related interface is configured to facilitate a telephone call witha customer-support agent. If the status information indicatescustomer-support agents are not available to take telephone calls, theweb widget provides a non-call-related interface to the user, whereinthe non-call-related interface is configured to facilitate analternative channel of customer support that does not involve atelephone call.

In some embodiments, the call-related interface enables the user toenter a telephone number to receive a callback from a customer-supportagent.

In some embodiments, when the user makes a callback request through thecall-related interface, the customer-support system enqueues thecallback request, wherein the callback request will to be sent to a nextavailable customer-support agent when the callback request reaches a topof the queue.

In some embodiments, the call-related interface provides the user with atelephone number that the user can dial to speak with a customer-supportagent.

In some embodiments, the customer-support system is architected toinclude a talk embeddable service, which mediates communications betweennumerous web widgets and an underlying voice application.

In some embodiments, the talk embeddable service consolidates requestsfrom web widgets and also verifies that the requests are legitimatebefore forwarding the requests to the underlying voice application.

In some embodiments, the system receives updated configurationinformation at the web widget, wherein the updated configurationinformation was entered by an administrator through an admin interface.Next, the system reconfigures the web widget based on the updatedconfiguration information.

In some embodiments, the web widget provides omnichannel access to thecustomer-support system.

In some embodiments, the omnichannel access facilitates the followingtypes of communication between the user and the customer-support system:a user-fillable form to communicate with the customer-support system; anonline chat session with a customer-support agent; a telephone call witha customer-support agent; and access to a self-service help system,which facilitates user-initiated searches through a customer-supportknowledge base.

In some embodiments, the web widget makes the call to thecustomer-support system through a connection to a web socket interfaceprovided by the customer-support system.

In some embodiments, the customer-support system places limits on: anumber of request that can originate from the same IP address within agiven time interval; a number of calls a user can make from the sametelephone number within a given time interval; and a number of callbackrequests a user can make to the same telephone number within a giventime interval.

In some embodiments, the customer-support system prevents a user fromsimultaneously enqueuing multiple calls or multiple callback requests.

BRIEF DESCRIPTION OF THE FIGURES

FIG. 1 illustrates a computing environment including an application andan associated customer-support system in accordance with the disclosedembodiments.

FIG. 2A illustrates how a web widget in a website provides access tomultiple customer-support channels in accordance with the disclosedembodiments.

FIG. 2B illustrates a channel choice menu in accordance with thedisclosed embodiments.

FIG. 2C illustrates a callback interface in accordance with thedisclosed embodiments.

FIG. 2D illustrates a call-us interface in accordance with the disclosedembodiments.

FIG. 3 illustrates a talk embeddable service that mediatescommunications between numerous web widgets and an underlying voiceapplication in accordance with the disclosed embodiments.

FIG. 4 presents a flowchart illustrating how a web widget can providecustomer-support services to a website user in accordance with thedisclosed embodiments.

DETAILED DESCRIPTION

The following description is presented to enable any person skilled inthe art to make and use the present embodiments, and is provided in thecontext of a particular application and its requirements. Variousmodifications to the disclosed embodiments will be readily apparent tothose skilled in the art, and the general principles defined herein maybe applied to other embodiments and applications without departing fromthe spirit and scope of the present embodiments. Thus, the presentembodiments are not limited to the embodiments shown, but are to beaccorded the widest scope consistent with the principles and featuresdisclosed herein.

The data structures and code described in this detailed description aretypically stored on a computer-readable storage medium, which may be anydevice or medium that can store code and/or data for use by a computersystem. The computer-readable storage medium includes, but is notlimited to, volatile memory, non-volatile memory, magnetic and opticalstorage devices such as disk drives, magnetic tape, CDs (compact discs),DVDs (digital versatile discs or digital video discs), or other mediacapable of storing computer-readable media now known or later developed.

The methods and processes described in the detailed description sectioncan be embodied as code and/or data, which can be stored in acomputer-readable storage medium as described above. When a computersystem reads and executes the code and/or data stored on thecomputer-readable storage medium, the computer system performs themethods and processes embodied as data structures and code and storedwithin the computer-readable storage medium. Furthermore, the methodsand processes described below can be included in hardware modules. Forexample, the hardware modules can include, but are not limited to,application-specific integrated circuit (ASIC) chips, field-programmablegate arrays (FPGAs), and other programmable-logic devices now known orlater developed. When the hardware modules are activated, the hardwaremodules perform the methods and processes included within the hardwaremodules.

Computing Environment

Before describing the web widget in more detail, we first describe acomputing environment in which it operates. FIG. 1 illustrates acomputing environment 100 including a website 124 and an associatedcustomer-support system 120 in accordance with the disclosedembodiments. Within computing environment 100, a number of users 102-104interact with website 124 through client computer systems 112-114,respectively. Website 124 is provided by an organization, such as acommercial enterprise, to enable users 102-104 to perform variousoperations associated with the organization, or to access one or moreservices provided by the organization. For example, website 124 canprovide online accounting software that users 102-104 can access toprepare and file tax returns online. In another example, website 124provides a commercial website for selling sporting equipment. Note thatwebsite 124 can be hosted on a local or remote server.

If users 102-104 have problems or questions about transactions onwebsite 124, they can access customer-support system 120 to obtain helpin dealing with issues, which can include various problems andquestions. For example, a user of accounting software may need help inusing a feature of the accounting software, or a customer of a websitethat sells sporting equipment may need help in cancelling an order thatwas erroneously entered. This help may be provided by a customer-supportagent 111 who operates a client computer system 115 and interacts withusers 102-104 through customer-support system 120. This help may alsocomprise automatically suggested helpful articles that the customer canread to hopefully resolve the problem or question. Note that acustomer-support agent 111 can access website 124 (either directly orindirectly through help center 120) to help resolve an issue.

Customer-support system 120 organizes customer issues using a ticketingsystem 122, which generates tickets to represent each customer issue.Ticketing systems are typically associated with a physical or virtual“help center” (or “help desk”) for resolving customer problems. Notethat, although the present invention is described with reference to aticketing system, it is not meant to be limited to customer-supportinteractions involving ticketing systems. In general, the invention canbe applied to any type of system that enables a customer to resolve aproblem with a product or service provided by an organization.

Ticketing system 122 generally comprises a set of software resourcesthat enable a customer to resolve an issue. In the illustratedembodiment, specific customer issues are associated with abstractionscalled “tickets,” which encapsulate various data and metadata associatedwith the customer requests to resolve an issue. (Within thisspecification, tickets are more generally referred to as “customerrequests.”) An exemplary ticket can include a ticket identifier, andinformation (or links to information) associated with the problem. Forexample, this information can include: (1) information about theproblem; (2) customer information for one or more customers who areaffected by the problem; (3) agent information for one or morecustomer-support agents who are interacting with the customer; (4) emailand other electronic communications about the problem (which, forexample, can include a question posed by a customer about the problem);(5) information about telephone calls associated with the problem; (6)timeline information associated with customer-support interactions toresolve the problem, including response times and resolution times, suchas a first reply time, a time to full resolution and a requester waittime; and (7) effort metrics, such as a number of communications orresponses by a customer, a number of times a ticket has been reopened,and a number of times the ticket has been reassigned to a differentcustomer-support agent.

Web Widget

FIG. 2A illustrates how a web widget 202 in a website 124 providesaccess to multiple customer-support channels in accordance with thedisclosed embodiments. As illustrated in FIG. 2A, a user 102 who isaccessing a website 124 can use an interface 203 provided by a webwidget 202 to access multiple customer-support channels, including: auser-fillable form 204, which is sent to customer-support agent 111; anonline chat 205 session with a customer-support agent 111; a telephonecall 206 with a customer-support agent 111; and self help 207 involvinguser-initiated searches through a customer-support knowledge base 208.

By presenting a specifically configured interface 203 to user 102, webwidget 202 controls how user 102 accesses customer-support channels204-207. Moreover, customer-support agent 111 is able to control how thechannels are accessed through interface 203 by interacting with an admininterface 210, which can be used to send configuration information 212to web widget 202 to configure various settings for web widget 202.

For example, FIG. 2B illustrates a channel choice menu for web widget202 in accordance with the disclosed embodiments. In this example, webwidget 202 has been notified that customer-support agents are availableto take telephone calls and to participate in online chat sessions.Then, when a user activates web widget 202 by clicking on a “launchericon” for web widget 202, the channel choice menu illustrated in FIG. 2Bis displayed to the user. As illustrated in FIG. 2B, this channel choicemenu enables the user to initiate a chat session, request a callback orleave a message. Note that if customer-support agents become unavailableto take a telephone call, this channel choice menu will dynamicallychange to remove the request-a-callback option.

When user 102 clicks on the “request-a-callback” option in the menu inFIG. 2B, user 102 is presented with the callback interface illustratedin FIG. 2C. This callback interface enables the user to enter atelephone number to receive a return telephone call from acustomer-support agent. When user 102 submits the callback request, thecallback request is placed in a queue to be sent to a next availablecustomer-support agent. This callback interface is configured to displaythe average wait time for callbacks, wherein this wait-timeconfiguration option can be specified by customer-support agent 111through admin interface 210. The average wait time for callbacks may beautomatically calculated by the customer support system.

In another example, if customer-support agent 111 deactivates the chatoption and the leave-a-message option through admin interface, and alsoif customer-support agents are available to take telephone calls, webwidget 202 only presents talk options to user 102, such as the call-usinterface illustrated in FIG. 2D. This call-us interface displays acustomer-support telephone number to user 102. When user 102 dials thisnumber, user 102 will be enqueued to speak with a customer-supportagent. Note that web widget 202 can be configured to display either thecall-us interface or the callback interface depending on details of anunderlying service-level agreement.

Talk Embeddable Service

FIG. 3 illustrates a talk embeddable service 306 that mediatescommunications between numerous web widgets 301-304 and an underlyingvoice application 308 in accordance with the disclosed embodiments. Talkembeddable service 306 protects voice application 306 by providing adefensive layer, which protects voice application 308 from a potentiallylarge volume of traffic from web widgets 301-304. This protection can beimportant because many thousands or even millions of web widgets may besimultaneously trying to access voice application 308, which can createa large volume of traffic that will potentially overwhelm voiceapplication 308.

During operation, talk embeddable service 306 exposes a web socketinterface that widgets 301-304 can connect to. These connections enableweb widgets 301-304 to receive the latest state information fromcustomer-support system 120, and also to receive widget configurationupdates entered by a customer-support agent 111 through admin interface210. Talk embeddable service 306 consolidates requests from web widgets301-304, and also makes certain that the requests are legitimate. Forexample, talk embeddable service 306 can check to see whether telephonenumbers for callback requests are valid telephone numbers.

Process for Automatically Forming Support Topics

FIG. 4 presents a flowchart illustrating how a web widget can providecustomer-support services to a website user in accordance with thedisclosed embodiments. First, when the user accesses a web pagecontaining the web widget, the system automatically makes a call fromthe web widget to a customer-support system (step 402). Next, inresponse to the call, the customer-support system determines whethercustomer-support agents are available to take telephone calls, andreturns status information to the web widget indicating whethercustomer-support agents are available to take telephone calls (step404). Then, if the status information indicates customer-support agentsare available to take telephone calls, the web widget provides acall-related interface to the user, wherein the call-related interfaceis configured to facilitate a telephone call with a customer-supportagent (step 406). On the other hand, if the status information indicatescustomer-support agents are not available to take telephone calls, theweb widget provides a non-call-related interface to the user, whereinthe non-call-related interface is configured to facilitate analternative channel of customer support that does not involve atelephone call (step 408).

Various modifications to the disclosed embodiments will be readilyapparent to those skilled in the art, and the general principles definedherein may be applied to other embodiments and applications withoutdeparting from the spirit and scope of the present invention. Thus, thepresent invention is not limited to the embodiments shown, but is to beaccorded the widest scope consistent with the principles and featuresdisclosed herein.

The foregoing descriptions of embodiments have been presented forpurposes of illustration and description only. They are not intended tobe exhaustive or to limit the present description to the formsdisclosed. Accordingly, many modifications and variations will beapparent to practitioners skilled in the art. Additionally, the abovedisclosure is not intended to limit the present description. The scopeof the present description is defined by the appended claims.

What is claimed is:
 1. A method for providing customer-support servicesto a user of a website through a web widget, comprising: when the useraccesses a web page containing the web widget, automatically making acall from the web widget to a customer-support system; in response tothe call, obtaining status information from the customer-support system,wherein the status information indicates whether customer-support agentsare available to take telephone phone calls; if the status informationindicates customer-support agents are available to take telephone calls,providing a call-related interface to the user through the web widget,wherein the call-related interface is configured to facilitate atelephone call with a customer-support agent; and if the statusinformation indicates customer-support agents are not available to taketelephone calls, providing a non-call-related interface to the userthrough the web widget, wherein the non-call-related interface isconfigured to facilitate an alternative channel of customer support thatdoes not involve a telephone call; wherein the automatic call from theweb widget to the customer-support system occurs before the userinteracts with the web page; and wherein the status information isobtained before the user interacts with the web page.
 2. The method ofclaim 1, wherein the call-related interface enables the user to enter atelephone number to receive a callback from a customer-support agent. 3.The method of claim 2, wherein: when the user makes a callback requestthrough the call-related interface, the customer-support system enqueuesthe callback request, and the callback request will be sent to a nextavailable customer-support agent when the callback request reaches a topof the queue.
 4. The method of claim 1, wherein the call-relatedinterface provides the user with a telephone number that the user candial to speak with a customer-support agent.
 5. The method of claim 1,wherein the customer-support system includes a talk embeddable servicethat mediates communications between numerous web widgets and anunderlying voice application.
 6. The method of claim 5, wherein the talkembeddable service consolidates requests from web widgets and verifiesthat the requests are legitimate before forwarding the requests to theunderlying voice application.
 7. The method of claim 1, wherein themethod further comprises: receiving updated configuration information atthe web widget, wherein the updated configuration information wasentered by an administrator through an admin interface; andreconfiguring the web widget based on the updated configurationinformation.
 8. The method of claim 1, wherein the web widget providesomnichannel access to the customer-support system.
 9. The method ofclaim 8, wherein the omnichannel access facilitates the following typesof communication between the user and the customer-support system: auser-fillable form to communicate with the customer-support system; anonline chat session with a customer-support agent; a telephone call witha customer-support agent; and access to a self-service help system,which facilitates user-initiated searches through a customer-supportknowledge base.
 10. The method of claim 1, wherein the web widget makesthe call to the customer-support system through a connection to a websocket interface provided by the customer-support system.
 11. The methodof claim 1, wherein the customer-support system places limits on: anumber of requests that can originate from the same IP address within agiven time interval; a number of calls a user can make from the sametelephone number within a given time interval; and a number of callbackrequests a user can make to the same telephone number within a giventime interval.
 12. A non-transitory computer-readable storage mediumstoring instructions that, when executed by a computer, cause thecomputer to perform a method for providing customer-support services toa user of a website through a web widget, the method comprising: whenthe user accesses a web page containing the web widget, automaticallymaking a call from the web widget to a customer-support system; inresponse to the call, obtaining status information from thecustomer-support system, wherein the status information indicateswhether customer-support agents are available to take telephone phonecalls; if the status information indicates customer-support agents areavailable to take telephone calls, providing a call-related interface tothe user through the web widget, wherein the call-related interface isconfigured to facilitate a telephone call with a customer-support agent;and if the status information indicates customer-support agents are notavailable to take telephone calls, providing a non-call-relatedinterface to the user through the web widget, wherein thenon-call-related interface is configured to facilitate an alternativechannel of customer support that does not involve a telephone call;wherein the automatic call from the web widget to the customer-supportsystem occurs before the user interacts with the web page; and whereinthe status information is obtained before the user interacts with theweb page.
 13. The non-transitory computer-readable storage medium ofclaim 12, wherein the call-related interface enables the user to enter atelephone number to receive a callback from a customer-support agent.14. The non-transitory computer-readable storage medium of claim 13,wherein: when the user makes a callback request through the call-relatedinterface, the customer-support system enqueues the callback request,and the callback request will be sent to a next availablecustomer-support agent when the callback request reaches a top of thequeue.
 15. The non-transitory computer-readable storage medium of claim12, wherein the call-related interface provides the user with atelephone number that the user can dial to speak with a customer-supportagent.
 16. The non-transitory computer-readable storage medium of claim12, wherein the customer-support system includes a talk embeddableservice that mediates communications between numerous web widgets and anunderlying voice application.
 17. The non-transitory computer-readablestorage medium of claim 16, wherein the talk embeddable serviceconsolidates requests from web widgets and verifies that the requestsare legitimate before forwarding the requests to the underlying voiceapplication.
 18. The non-transitory computer-readable storage medium ofclaim 12, wherein the method further comprises: receiving updatedconfiguration information at the web widget, wherein the updatedconfiguration information was entered by an administrator through anadmin interface; and reconfiguring the web widget based on the updatedconfiguration information.
 19. The non-transitory computer-readablestorage medium of claim 12, wherein the web widget provides omnichannelaccess to the customer-support system.
 20. The non-transitorycomputer-readable storage medium of claim 19, wherein the omnichannelaccess facilitates the following types of communication between the userand the customer-support system: a user-fillable form to communicatewith the customer-support system; an online chat session with acustomer-support agent; a telephone call with a customer-support agent;and access to a self-service help system, which facilitatesuser-initiated searches through a customer-support knowledge base. 21.The non-transitory computer-readable storage medium of claim 12, whereinthe web widget makes the call to the customer-support system through aconnection to a web socket interface provided by the customer-supportsystem.
 22. The non-transitory computer-readable storage medium of claim12, wherein the customer-support system places limits on: a number ofrequests that can originate from the same IP address within a given timeinterval; a number of calls a user can make from the same telephonenumber within a given time interval; and a number of callback requests auser can make to the same telephone number within a given time interval.23. A system that provides customer-support services to a user of awebsite through a web widget, comprising: at least one processor and atleast one associated memory; and a customer-support system that executeson the at least one processor, wherein during operation thecustomer-support system: automatically makes a call from the web widgetto a customer-support system when the user accesses a web pagecontaining the web widget, in response to the call, obtains statusinformation from the customer-support system, wherein the statusinformation indicates whether customer-support agents are available totake telephone phone calls, if the status information indicatescustomer-support agents are available to take telephone calls, providesa call-related interface to the user through the web widget, wherein thecall-related interface is configured to facilitate a telephone call witha customer-support agent, and if the status information indicatescustomer-support agents are not available to take telephone calls,provides a non-call-related interface to the user through the webwidget, wherein the non-call-related interface is configured tofacilitate an alternative channel of customer support that does notinvolve a telephone call; wherein the automatic call from the web widgetto the customer-support system occurs before the user interacts with theweb page; and wherein the status information is obtained before the userinteracts with the web page.
 24. A method for providing customer-supportservices to a user of a website through a web widget, comprising:receiving at a customer-support system a call from the web widget,wherein the call was automatically initiated when the user accessed aweb page containing the web widget; in response to the call, determiningwhether customer-support agents are available to take telephone phonecalls; and returning status information to the web widget, wherein: thestatus information indicates whether customer-support agents areavailable to take telephone phone calls, if the status informationindicates customer-support agents are available to take telephone calls,the web widget provides a call-related interface to the user, thecall-related interface is configured to facilitate a telephone call witha customer-support agent, and if the status information indicatescustomer-support agents are not available to take telephone calls, theweb widget provides a non-call-related interface to the user, whereinthe non-call-related interface is configured to facilitate analternative channel of customer support that does not involve atelephone call; wherein the automatic call from the web widget to thecustomer-support system occurs before the user interacts with the webpage; and wherein the status information is obtained before the userinteracts with the web page.